package br.ucb.antares.bean;

import java.io.ByteArrayInputStream;
import java.util.List;

import javax.faces.bean.ManagedBean;

import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
import org.primefaces.model.UploadedFile;

import br.ucb.antares.HIB.ProdutoHIB;
import br.ucb.antares.entidade.Produto;
import br.ucb.antares.interfaces.Bean;
import br.ucb.antares.log4j.ProdutoLog;
@ManagedBean
public class ProdutoBean  implements Bean<Produto>{

		private Produto produto;
		private ProdutoHIB produtoHIB;
		private List<Produto> produtos;
		private UploadedFile foto;
		private List<Produto> filtroProduto;
		private ProdutoLog produtoLog = new ProdutoLog();
		public ProdutoBean() {
			
			
			ProdutoHIB produtoHIB = new ProdutoHIB();
			setProduto(new Produto());
			setProdutos(produtoHIB.listar());
		}
		public List<Produto> getFiltroProduto() {
			return filtroProduto;
		}


		public void setFiltroProduto(List<Produto> filtroProduto) {
			this.filtroProduto = filtroProduto;
		}


		public Produto getProduto() {
			return produto;
		}
		public void setProduto(Produto produto) {
			this.produto = produto;
		}
		public ProdutoHIB getProdutoHIB() {
			return produtoHIB;
		}
		public void setProdutoHIB(ProdutoHIB produtoHIB) {
			this.produtoHIB = produtoHIB;
		}
		public List<Produto> getProdutos() {
			return produtos;
		}
		public void setProdutos(List<Produto> produtos) {
			this.produtos = produtos;
		}
		
		@Override
		public String salvar() {
			getProduto().setFoto(foto.getContents());
			//fileUploadAction();
			setProdutoHIB(new ProdutoHIB());
			getProdutoHIB().salvar(getProduto());
			setProduto(new Produto());
			produtoLog.logCadastrar(produto);

			return "listProd.xhtml";
			
		}

		@Override
		public String excluir() {
			setProdutoHIB(new ProdutoHIB());
			getProdutoHIB().excluir(getProduto());
			setProdutos(produtoHIB.listar());
			produtoLog.logExcluir(produto);
			return "listProd.xhtml";
		}

		@Override
		public String listar() {
			setProdutoHIB(new ProdutoHIB());
			setProdutos(getProdutoHIB().listar());

			return "listProd.xhtml";
		}

		@Override
		public String consultar() {
			setProdutoHIB(new ProdutoHIB());
			setProduto(getProdutoHIB().consultar(getProduto().getIdProduto()));

			return "listProd.xhtml";
		}
		public String pageDetalhe(){
			System.out.println(getProduto().getNome());
			
			return "detalheProduto.xhtml";
		}

		public int getQuantidade(){
			return getProdutos().size();
		}
		public UploadedFile getFoto() {
			
			return foto;
		}
		public void setFoto(UploadedFile foto) {
			this.foto = foto;
		}
		public StreamedContent getImagem(Produto produto){
			return new DefaultStreamedContent(new ByteArrayInputStream(produto.getFoto()));
		}
		
}
